package modelo.seniales.carteles;

import modelo.carrera.Infraccion;
import modelo.geometria.Circunferencia;
import modelo.geometria.Vector;
import modelo.vehiculos.Vehiculo;

public class LimiteVelocidad extends Cartel {
	private double velocidad;
	private boolean limiteMaximo;
	
	public LimiteVelocidad(long identificador, Vector posicion, double velocidad, boolean esLimiteVelocidadMaxima) {
		super(identificador, new Circunferencia(posicion, 10));
		this.velocidad = velocidad;
		this.limiteMaximo = esLimiteVelocidadMaxima;
	}
	
	@Override
	public boolean cumple(Vehiculo vehiculo) {
		if (vehiculo.getCuerpo().solapa(cuadra.getSuperficie()))
		{
			if (limiteMaximo)
				return (vehiculo.getVelocidad() <= velocidad);
			else
				return (vehiculo.getVelocidad() >= velocidad);
		}
		else
			return true;
	}

	@Override
	public Infraccion obtenerInfraccion() {
		return Infraccion.infraccionLimiteVelocidad();
	}

	public boolean esLimiteDeVelocidadMaxima() {
		return limiteMaximo;
	}
	
	public double getVelocidad() {
		return velocidad;
	}
	
	@Override
	public String getIdentificador() {
		return String.valueOf(id);
	}
}
